package com.mark.java.dao;

import com.mark.java.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.List;

/**
 * Created by mark on 4/24/15.
 * <p>
 * <p>
 * * 注：第一个annotation注明这是一个repository，需要被Spring管理，
 * 然后自动装载之前在配置文件中配置的 SessionFactory，获取当前session后获取所有的用户，
 * 下面修改之前的UserService代码，service封装业务逻辑层代 码，我把每个service方法封装为一个事务。
 * （
 * PS:上面的SessionFactory获取当前Session是依赖于事务的，如果不在某个事务之内，
 * 会报错：No Session found for current thread。)
 */

@Repository
public class UserDAOImpl implements UserDAO {

//    @Autowired
//    private SessionFactory sessionFactory;

    // 设置hibernateTemplate属性
    @Autowired
    private HibernateTemplate hibernateTemplate;


    // 必须设置set方法
//    @Resource
//    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
//        this.hibernateTemplate = hibernateTemplate;
//    }

    /**
     *
     * @param u
     * @return
     */
    public int save(User u) {

       Integer resut = (Integer) hibernateTemplate.getSessionFactory().getCurrentSession().save(u);
        return resut;
    }

    public List<User> findAll() {

        List<User> entities = (List<User>) hibernateTemplate.find("from User");
        return entities;
    }

    public User findUserById(String phone_number) {


        // TODO Auto-generated method stub
        List<User> entitise = (List<User>) hibernateTemplate.find("from User where phone_number=" + phone_number);
        if (entitise.size() > 0) {
            User entity = entitise.get(0);
            return entity;
        }
        return null;
    }

    public void deleUser() {
//        hibernateTemplate.delete(entity);
    }


//    public int save(User u) {
//        return (Integer) sessionFactory.getCurrentSession().save(u);
//    }
//
//    public List<User> findAll() {
//        Criteria criteria = sessionFactory.getCurrentSession().createCriteria(User.class);
//        return criteria.list();
//    }
//
//    public User getuser(String id) {
//        Criteria criteria = sessionFactory.getCurrentSession().createCriteria(User.class);
//        List<User> ls = criteria.list();
//
//        int parramatid = Integer.parseInt(id);
//
//        User result =null;
//        for (User ur : ls) {
//            if (parramatid == ur.getId()) {
//                result = ur;
//                break;
//            }
//        }
//
//        return  result;

//    }
//        User us = ls.get(0);
//        return us;










//
//    /**
//     *  增加 用户
//     * @param user
//     * @return
//     */
//    public int save(User user) {
//        this.getHibernateTemplate().save(user);
//        return 0;
//    }
//
//    /**
//     * 查找用户
//     * @return
//     */
//    @SuppressWarnings("unchecked")
//    public List<User> findAll() {
//
////        String hql = "from User u order by u.id asc";
////        List<User> list = (List<User>) this.getHibernateTemplate().find(hql);
////        return list;
//
//
//        Criteria criteria = sessionFactory.getCurrentSession().createCriteria(User.class);
//        return criteria.list();
//    }
//
//
//    /**
//     * 根据id 查找用户
//     * @param id
//     * @return
//     */
//
//
//    public User findUserById(String id) {
//        User user = null;
//        user = (User) this.getHibernateTemplate().get(User.class, id);
//        return user;
//    }
//
//
//    /**
//     * 删除用户
//     */
//    public void deleUser() {
//
////        public void removeUser(User user) {
////            this.getHibernateTemplate().delete(user);
////        }
//
//    }
//
//    /**
//     * 更新用户
//     * @param user
//     */
//    public void updateUser(User user) {
//        this.getHibernateTemplate().update(user);
//    }

}
